package com.wsjzzcbq.qianyuan.common.exception;

import com.wsjzzcbq.qianyuan.common.bean.R;
import com.wsjzzcbq.qianyuan.common.constant.MsgConsts;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * 全局异常处理
 */
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler
    public R<?> exceptionHandler(Exception e){
        log.error("异常:", e);
        return R.error(MsgConsts.NETWORK_ERROR);
    }

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public R<?> exceptionHandler(MethodArgumentNotValidException e){
        log.error("BindException异常:", e);
        return R.error(e.getBindingResult().getFieldError().getDefaultMessage());
    }

    @ExceptionHandler(NoHasPermissionExpection.class)
    public R<?> noHasPermissionexceptionHandler(NoHasPermissionExpection e){
        log.error("NoHasPermissionExpection异常:", e);
        return R.error(MsgConsts.NO_PERMISSION);
    }
}
